load("//tools/lint:lint.bzl", "add_lint_tests")
load(
    "//tools/skylark:drake_cc.bzl",
    "drake_cc_binary",
    "drake_cc_googletest",
    "drake_cc_library",
)

package(default_visibility = ["//visibility:private"])

drake_cc_library(
    name = "rimless_wheel_vector_types",
    srcs = [
        "rimless_wheel_continuous_state.cc",
        "rimless_wheel_params.cc",
    ],
    hdrs = [
        "rimless_wheel_continuous_state.h",
        "rimless_wheel_params.h",
    ],
    visibility = ["//visibility:public"],
    deps = [
        "//common:dummy_value",
        "//common:essential",
        "//common:name_value",
        "//common/symbolic:expression",
        "//systems/framework:vector",
    ],
)

drake_cc_library(
    name = "rimless_wheel",
    srcs = ["rimless_wheel.cc"],
    hdrs = [
        "rimless_wheel.h",
    ],
    visibility = ["//visibility:public"],
    deps = [
        ":rimless_wheel_vector_types",
        "//common:default_scalars",
        "//common:essential",
        "//systems/framework:leaf_system",
    ],
)

drake_cc_library(
    name = "rimless_wheel_geometry",
    srcs = ["rimless_wheel_geometry.cc"],
    hdrs = ["rimless_wheel_geometry.h"],
    visibility = ["//visibility:public"],
    deps = [
        ":rimless_wheel",
        "//geometry:geometry_roles",
        "//geometry:scene_graph",
        "//math:geometric_transform",
        "//systems/framework:diagram_builder",
        "//systems/framework:leaf_system",
    ],
)

drake_cc_binary(
    name = "simulate",
    srcs = ["simulate.cc"],
    add_test_rule = 1,
    test_rule_args = ["--target_realtime_rate=0.0"],
    deps = [
        ":rimless_wheel",
        ":rimless_wheel_geometry",
        "//geometry:drake_visualizer",
        "//systems/analysis:simulator",
        "//systems/framework:diagram_builder",
        "@gflags",
    ],
)

drake_cc_googletest(
    name = "rimless_wheel_test",
    deps = [
        ":rimless_wheel",
        "//systems/analysis:simulator",
        "//systems/framework/test_utilities:scalar_conversion",
    ],
)

drake_cc_googletest(
    name = "rimless_wheel_geometry_test",
    deps = [
        ":rimless_wheel",
        ":rimless_wheel_geometry",
    ],
)

add_lint_tests(enable_clang_format_lint = False)
